#ifndef __PHOTO_H
#define __PHOTO_H


//编译后的程序需与图片放置于同一文件夹，开始、退出界面图片在上一级目录，具体路径请自行配置

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h> //mmap();   munmap();
#include <linux/input.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
#include <signal.h>
#include <pthread.h>
#include <strings.h>

#define HEIGHT 480  //屏幕高度
#define WIDTH 800   //屏幕宽度

#define DAEMON 120  //进程pid

#define PICDIR "./pic/" //图片路径
#define PICNUM 6            //BMP图片数目
#define THNUM 4             //线程数
#define BEGIN "./boot/pic0.bmp"    //开始界面图片路径
#define END "./boot/pic9.bmp"      //退出界面图片路径

#define LCD_PATH "/dev/fb0"    //LCD设备路径
#define KEY_PATH "/dev/event1" //键盘设备路径

#define UPS SIGRTMIN + 1    //上一张
#define DOWNS SIGRTMIN + 2  //下一张
#define BEGINS SIGRTMIN + 3 //开始
#define QUITS SIGRTMIN + 4  //退出
#define RETURN SIGRTMIN + 4 //返回

#define ESC 1 //各个按键的键值
#define HOME 102
#define POWER 2
#define ENTER 28
#define UP 103
#define DOWN 108
#define LEFT 105
#define RIGHT 106


struct input_event key_value;

volatile int is_enter; //标记是否打开程序
volatile int is_open;  //标记是否打开图片
volatile int page_sum; //标记总页数
volatile int page;    //标记当前页号，从1开始
volatile int choice;  //标记选中哪一张图片(0-1-2-3)

// volatile int is_enter = 0; //标记是否打开程序
// volatile int is_open = 0;  //标记是否打开图片
// volatile int page_sum = 0; //标记总页数
// volatile int page = 1;    //标记当前页号，从1开始
// volatile int choice = 0;  //标记选中哪一张图片(0-1-2-3)

FILE *bmp[PICNUM];
FILE *bmp_exit;
FILE *bmp_start;  
int *fb_mem;
char buff[WIDTH * HEIGHT * 3];

pid_t pptpid;
int pptfd[2];//管道，pptfd[0]是读端，pptfd[1]是写端。

void config_var();

void draw_lcd(FILE *bmps, int x1, int x2, int y1, int y2, int z1, int z2);
    //按给定参数绘制图片
    /* x1:x起始位置;  x2:x结束位置;  y1:y起始位置;  y2:y结束位置;  z1:行偏移位置;  z2:列偏移位置 
     * 函数作用：从(x1, y1)到(x2, y2)绘制图片bmps 
     * 横向每(z1 + 1)个像素并为一个，纵向每(z2 + 1)行并为一行, z1、z2需配合x1、x2、y1和y2 */

void to_page();//按页号将四张图片输出为一张

void draw_frame();//为选中的图片绘制红框

void get_file(DIR *dir);//读取图片文件

void key_back();//返回小图模式

void key_enter(); //进入主程序
void key_exit();//退出程序

void getNext(int sig);

void pptQuit(int sig);

void *Thread(void *p);

void DrawInWindows(FILE *bmps, int method);
void key_open();//打开选中的图片

void key_page_up();//上一页

void key_page_down();//下一页

void key_up();//上一张

void key_down();//下一张

void close_pic();

void pic_effect(int code);

#endif  //__PHOTO_H